PROGRAM prova
  IMPLICIT NONE         ! non richiesto se non ci sono variabili
  INTEGER :: i, j, k, riga,colonna,ios
  REAL:: a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,somma
  ! dichiarazione di array
  real, dimension(:,:), ALLOCATABLE :: matrice !! array bidimensionale dinamico
  OPEN(unit=0, file="tabella.txt")
   riga = 0
  !colonna = 1
  !(alloca la dimensione. dell'array. si può anche allocare dopo aver letto i dati dal file 

  ALLOCATE(matrice(30000,11)) 
  do 
    !READ (0,*, iostat=ios) matrice(riga,1) x, y, w !legge la prima riga 
    READ (0,*, iostat=ios) a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11
    if (ios /= 0) then ! se la iostat diversa da 0 esci altrimenti assegna all'array x,y,w
      exit
    end if
    riga = riga + 1
    matrice (riga, 1) = a1
    matrice (riga, 2) = a2
    matrice (riga, 3) = a3
    matrice (riga, 4) = a4
    matrice (riga, 5) = a5
    matrice (riga, 6) = a6
    matrice (riga, 7) = a7
    matrice (riga, 8) = a8
    matrice (riga, 9) = a9
    matrice (riga, 10) = a10
    matrice (riga, 11) = a11
   
    !somma = somma + x +y + w  
    !WRITE (*,*) x,y,w ! stampa a video i dati
  end do    

  write (*,*) "Questa e' la somma"      
  
  ! ricomincia a leggere l'array riga x colonna e stampa i dati memorizzati
  write (*,*) "Stampo i dati dell'array bidimensionale"
  do i=1,riga
    do j=1,11
      write (*,*) matrice (i,j)
    end do
  end do 
  
  write(*,*) "Passo alla subroutine calcolo1 il valore della somma totale"
  Call Calcolo1(somma)
  write (*,*) "Main:Valore di somma modificato dalla subroutine"
  write (*,*) somma
  
  DeAllocate (matrice)
  
  STOP   
END PROGRAM prova

SubRoutine Calcolo1(somma)
  ! inserire le istruzioni qui e le eventuali ri-dichiarazioni dei parametri
  real somma
  write(*,*) "Subroutine Calcolo1: Stampo il valore della somma passato dal Main"
  write (*,*) somma
  somma = 112
end subroutine Calcolo1
  
SubRoutine Calcolo2
  ! inserire le istruzioni qui e le eventuali ri-dichiarazioni dei parametri
end subroutine Calcolo2
